/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.trandio.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.NamingException;
import org.trandio.model.AuxiliarPlanoVO;
import org.trandio.model.PacienteVO;
import org.trandio.model.PlanoPacienteVO;
import org.trandio.util.ConexionDb;

/**
 *
 * @author root
 */
public class PlanosDAO implements PlanosInterface {

    @Override
    public int getNumeroColumnas() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        int count = 0;

        String sql = "SELECT count(*) FROM tb_estructura_paciente";

            PreparedStatement stmt = conn.prepareStatement(sql);
            ResultSet res = stmt.executeQuery();
            if (res.next()) {
                count = res.getInt(1);
            }


        return count;
    }

    @Override
    public PlanoPacienteVO getValidarRequerido(int i) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();        

        String sql = "SELECT * FROM tb_estructura_paciente WHERE orden="+i;

            PreparedStatement stmt = conn.prepareStatement(sql);

            ResultSet res = stmt.executeQuery();
            PlanoPacienteVO planoPacienteVO = new PlanoPacienteVO();
            if (res.next()) {                 
                     planoPacienteVO.setCampo(res.getString("campo"));
                     planoPacienteVO.setRequerido(res.getBoolean("requerido"));
                     planoPacienteVO.setTabla_referencia(res.getString("tabla_referencia"));
                     planoPacienteVO.setCampo_referencia(res.getString("campo_referencia"));
                     planoPacienteVO.setOrden(res.getInt("orden"));
            }


         res.close();
         stmt.close();
         if (!conn.isClosed())
               conn.close();



        return planoPacienteVO;
    }

    @Override
    public boolean validarReferencia(String tabla_referencia, String campo_referencia, String valor) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        boolean valido = true;

        String sql = "SELECT count(*)"+
                     " FROM "+tabla_referencia+
                     " WHERE "+campo_referencia+"='"+valor+"'";


            //System.out.println(sql);

            PreparedStatement stmt = conn.prepareStatement(sql);
            ResultSet res = stmt.executeQuery();

            if (res.next()) {
                if(res.getInt(1)==0){
                    valido = false;
                }
            }

            res.close();
            stmt.close();
            if (!conn.isClosed())
               conn.close();


        return valido;
    }

    @Override
    public AuxiliarPlanoVO getReferencia(String tabla_referencia, String campo_referencia, String valor) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();



        String sql = "SELECT * "+
                     " FROM "+tabla_referencia+
                     " WHERE "+campo_referencia+"='"+valor+"'";


            System.out.println(sql);

            PreparedStatement stmt = conn.prepareStatement(sql);
            ResultSet res = stmt.executeQuery();

            AuxiliarPlanoVO auxiliarPlanoVO = new AuxiliarPlanoVO();
            if (res.next()) {
                auxiliarPlanoVO.setId(res.getInt(1));
            }

            res.close();
            stmt.close();
            if (!conn.isClosed())
               conn.close();


        return auxiliarPlanoVO;
    }

    @Override
    public void insertarPacientePlano(String cadInsert) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        PreparedStatement stmt = conn.prepareStatement(cadInsert);

        stmt.execute();
        stmt.close();
               if (!conn.isClosed())
               conn.close();
    }


}
